from docx import Document
from docx.shared import Inches

# 创建文档对象
doc = Document()

# 添加标题
doc.add_heading('知识库系统技术文档', 0)

# 添加副标题
doc.add_heading('系统架构与实现方案', level=1)

# 添加正文内容
p = doc.add_paragraph()
p.add_run('本技术文档详细介绍知识库系统的架构设计、核心组件和实现方案。').bold = True

# 添加架构概述
doc.add_heading('1. 系统架构概述', level=2)
doc.add_paragraph(
    '知识库系统采用前后端分离的架构设计，主要由以下几个核心部分组成：'
)

# 添加列表
bullet_points = [
    '前端界面：基于Vue.js开发的用户交互界面',
    '后端服务：基于FastAPI的RESTful API服务',
    '向量存储：使用ChromaDB进行文档向量的存储和检索',
    '嵌入模型：使用DeepSeek或OpenAI的嵌入模型生成文本向量',
    'LLM接口：集成大语言模型提供智能问答功能'
]

for point in bullet_points:
    doc.add_paragraph(point, style='List Bullet')

# 添加技术栈部分
doc.add_heading('2. 技术栈选择', level=2)
doc.add_paragraph('系统采用了以下技术栈：')

# 添加表格
tech_table = doc.add_table(rows=1, cols=2)
tech_table.style = 'Table Grid'
hdr_cells = tech_table.rows[0].cells
hdr_cells[0].text = '类别'
hdr_cells[1].text = '技术选型'

# 添加表格内容
tech_items = [
    ('前端框架', 'Vue.js 3.x + Vite'),
    ('后端框架', 'FastAPI'),
    ('数据库', 'ChromaDB (向量存储)'),
    ('嵌入模型', 'DeepSeek-embed-text / OpenAI ada-002'),
    ('LLM模型', 'DeepSeek-Chat / GPT-4'),
    ('部署环境', 'Docker + Kubernetes')
]

for category, tech in tech_items:
    row_cells = tech_table.add_row().cells
    row_cells[0].text = category
    row_cells[1].text = tech

# 添加核心功能实现
doc.add_heading('3. 核心功能实现', level=2)

# 文档处理部分
doc.add_heading('3.1 文档处理模块', level=3)
doc.add_paragraph(
    '文档处理模块负责解析各种格式的文档，提取文本内容，并进行分块处理。系统支持PDF、DOCX和TXT三种主要格式的文档处理。'
)

doc.add_paragraph(
    '对于PDF文档，使用PyPDF库进行解析；对于DOCX文档，使用python-docx库；对于TXT文档，则直接读取文本内容。'
)

doc.add_paragraph(
    '解析后的文档会被分割成大小适中的文本块，每个文本块包含一定数量的字符，并保留适当的上下文重叠，以确保语义的完整性。'
)

# 向量存储部分
doc.add_heading('3.2 向量存储模块', level=3)
doc.add_paragraph(
    '向量存储模块使用ChromaDB作为底层存储引擎，负责文档向量的存储、索引和检索。系统会为每个文档块生成对应的向量表示，并建立高效的索引结构。'
)

doc.add_paragraph(
    '当用户进行搜索时，系统会将查询文本转换为向量，然后在向量空间中进行相似性搜索，找出最相关的文档块。'
)

# 智能问答部分
doc.add_heading('3.3 智能问答模块', level=3)
doc.add_paragraph(
    '智能问答模块集成了大语言模型，能够基于检索到的文档内容生成准确、连贯的回答。系统会将检索到的相关文档作为上下文传递给语言模型，帮助模型生成更贴合用户问题的回答。'
)

# 添加性能优化建议
doc.add_heading('4. 性能优化建议', level=2)
performance_tips = [
    '对于大型知识库，建议定期清理不常用的文档',
    '可以根据文档类型和重要性设置不同的存储策略',
    '对于高频访问的文档，可以考虑使用缓存机制提高响应速度',
    '在部署时，可以根据用户规模和并发量调整系统资源配置'
]

for tip in performance_tips:
    doc.add_paragraph(tip, style='List Bullet')

# 保存文档
doc.save('data/uploads/demo_knowledge.docx')
print('DOCX文件已成功生成: data/uploads/demo_knowledge.docx')